/*
Adept MobileRobots Robotics Interface for Applications (ARIA)
Copyright (C) 2004-2005 ActivMedia Robotics LLC
Copyright (C) 2006-2010 MobileRobots Inc.
Copyright (C) 2011-2015 Adept Technology, Inc.
Copyright (C) 2016-2018 Omron Adept Technologies, Inc.

     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.

     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.

     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

If you wish to redistribute ARIA under different terms, contact 
Adept MobileRobots for information about a commercial version of ARIA at 
robots@mobilerobots.com or 
Adept MobileRobots, 10 Columbia Drive, Amherst, NH 03031; +1-603-881-7960
*/
/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 3.0.8
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package com.mobilerobots.Aria;

public class ArRobot {
  private transient long swigCPtr;
  protected transient boolean swigCMemOwn;

  public ArRobot(long cPtr, boolean cMemoryOwn) {
    swigCMemOwn = cMemoryOwn;
    swigCPtr = cPtr;
  }

  public static long getCPtr(ArRobot obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwn) {
        swigCMemOwn = false;
        AriaJavaJNI.delete_ArRobot(swigCPtr);
      }
      swigCPtr = 0;
    }
  }

  public ArRobot(String name, boolean ignored, boolean doSigHandle, boolean normalInit, boolean addAriaExitCallback) {
    this(AriaJavaJNI.new_ArRobot__SWIG_0(name, ignored, doSigHandle, normalInit, addAriaExitCallback), true);
  }

  public ArRobot(String name, boolean ignored, boolean doSigHandle, boolean normalInit) {
    this(AriaJavaJNI.new_ArRobot__SWIG_1(name, ignored, doSigHandle, normalInit), true);
  }

  public ArRobot(String name, boolean ignored, boolean doSigHandle) {
    this(AriaJavaJNI.new_ArRobot__SWIG_2(name, ignored, doSigHandle), true);
  }

  public ArRobot(String name, boolean ignored) {
    this(AriaJavaJNI.new_ArRobot__SWIG_3(name, ignored), true);
  }

  public ArRobot(String name) {
    this(AriaJavaJNI.new_ArRobot__SWIG_4(name), true);
  }

  public ArRobot() {
    this(AriaJavaJNI.new_ArRobot__SWIG_5(), true);
  }

  public void run(boolean stopRunIfNotConnected, boolean runNonThreaded) {
    AriaJavaJNI.ArRobot_run__SWIG_0(swigCPtr, this, stopRunIfNotConnected, runNonThreaded);
  }

  public void run(boolean stopRunIfNotConnected) {
    AriaJavaJNI.ArRobot_run__SWIG_1(swigCPtr, this, stopRunIfNotConnected);
  }

  public void runAsync(boolean stopRunIfNotConnected, boolean runNonThreadedPacketReader) {
    AriaJavaJNI.ArRobot_runAsync__SWIG_0(swigCPtr, this, stopRunIfNotConnected, runNonThreadedPacketReader);
  }

  public void runAsync(boolean stopRunIfNotConnected) {
    AriaJavaJNI.ArRobot_runAsync__SWIG_1(swigCPtr, this, stopRunIfNotConnected);
  }

  public void run() {
    AriaJavaJNI.ArRobot_run__SWIG_2(swigCPtr, this);
  }

  public void runAsync() {
    AriaJavaJNI.ArRobot_runAsync__SWIG_2(swigCPtr, this);
  }

  public boolean isRunning() {
    return AriaJavaJNI.ArRobot_isRunning(swigCPtr, this);
  }

  public void stopRunning(boolean doDisconnect) {
    AriaJavaJNI.ArRobot_stopRunning__SWIG_0(swigCPtr, this, doDisconnect);
  }

  public void stopRunning() {
    AriaJavaJNI.ArRobot_stopRunning__SWIG_1(swigCPtr, this);
  }

  public void setDeviceConnection(ArDeviceConnection connection) {
    AriaJavaJNI.ArRobot_setDeviceConnection(swigCPtr, this, ArDeviceConnection.getCPtr(connection), connection);
  }

  public ArDeviceConnection getDeviceConnection() {
    long cPtr = AriaJavaJNI.ArRobot_getDeviceConnection(swigCPtr, this);
    return (cPtr == 0) ? null : new ArDeviceConnection(cPtr, false);
  }

  public boolean isConnected() {
    return AriaJavaJNI.ArRobot_isConnected(swigCPtr, this);
  }

  public boolean blockingConnect(boolean tryHarderToConnect) {
    return AriaJavaJNI.ArRobot_blockingConnect__SWIG_0(swigCPtr, this, tryHarderToConnect);
  }

  public boolean blockingConnect() {
    return AriaJavaJNI.ArRobot_blockingConnect__SWIG_1(swigCPtr, this);
  }

  public boolean asyncConnect() {
    return AriaJavaJNI.ArRobot_asyncConnect(swigCPtr, this);
  }

  public boolean disconnect() {
    return AriaJavaJNI.ArRobot_disconnect(swigCPtr, this);
  }

  public void clearDirectMotion() {
    AriaJavaJNI.ArRobot_clearDirectMotion(swigCPtr, this);
  }

  public boolean isDirectMotion() {
    return AriaJavaJNI.ArRobot_isDirectMotion(swigCPtr, this);
  }

  public void stopStateReflection() {
    AriaJavaJNI.ArRobot_stopStateReflection(swigCPtr, this);
  }

  public void enableMotors() {
    AriaJavaJNI.ArRobot_enableMotors(swigCPtr, this);
  }

  public void disableMotors() {
    AriaJavaJNI.ArRobot_disableMotors(swigCPtr, this);
  }

  public void enableSonar() {
    AriaJavaJNI.ArRobot_enableSonar(swigCPtr, this);
  }

  public void enableAutonomousDrivingSonar() {
    AriaJavaJNI.ArRobot_enableAutonomousDrivingSonar(swigCPtr, this);
  }

  public void disableSonar() {
    AriaJavaJNI.ArRobot_disableSonar(swigCPtr, this);
  }

  public void stop() {
    AriaJavaJNI.ArRobot_stop(swigCPtr, this);
  }

  public void setVel(double velocity) {
    AriaJavaJNI.ArRobot_setVel(swigCPtr, this, velocity);
  }

  public void setVel2(double leftVelocity, double rightVelocity) {
    AriaJavaJNI.ArRobot_setVel2(swigCPtr, this, leftVelocity, rightVelocity);
  }

  public void move(double distance) {
    AriaJavaJNI.ArRobot_move(swigCPtr, this, distance);
  }

  public boolean isMoveDone(double delta) {
    return AriaJavaJNI.ArRobot_isMoveDone__SWIG_0(swigCPtr, this, delta);
  }

  public boolean isMoveDone() {
    return AriaJavaJNI.ArRobot_isMoveDone__SWIG_1(swigCPtr, this);
  }

  public void setMoveDoneDist(double dist) {
    AriaJavaJNI.ArRobot_setMoveDoneDist(swigCPtr, this, dist);
  }

  public double getMoveDoneDist() {
    return AriaJavaJNI.ArRobot_getMoveDoneDist(swigCPtr, this);
  }

  public void setHeading(double heading) {
    AriaJavaJNI.ArRobot_setHeading(swigCPtr, this, heading);
  }

  public void setRotVel(double velocity) {
    AriaJavaJNI.ArRobot_setRotVel(swigCPtr, this, velocity);
  }

  public void setDeltaHeading(double deltaHeading) {
    AriaJavaJNI.ArRobot_setDeltaHeading(swigCPtr, this, deltaHeading);
  }

  public boolean isHeadingDone(double delta) {
    return AriaJavaJNI.ArRobot_isHeadingDone__SWIG_0(swigCPtr, this, delta);
  }

  public boolean isHeadingDone() {
    return AriaJavaJNI.ArRobot_isHeadingDone__SWIG_1(swigCPtr, this);
  }

  public void setHeadingDoneDiff(double degrees) {
    AriaJavaJNI.ArRobot_setHeadingDoneDiff(swigCPtr, this, degrees);
  }

  public double getHeadingDoneDiff() {
    return AriaJavaJNI.ArRobot_getHeadingDoneDiff(swigCPtr, this);
  }

  public void setLatVel(double latVelocity) {
    AriaJavaJNI.ArRobot_setLatVel(swigCPtr, this, latVelocity);
  }

  public boolean isStopped(double stoppedVel, double stoppedRotVel, double stoppedLatVel) {
    return AriaJavaJNI.ArRobot_isStopped__SWIG_0(swigCPtr, this, stoppedVel, stoppedRotVel, stoppedLatVel);
  }

  public boolean isStopped(double stoppedVel, double stoppedRotVel) {
    return AriaJavaJNI.ArRobot_isStopped__SWIG_1(swigCPtr, this, stoppedVel, stoppedRotVel);
  }

  public boolean isStopped(double stoppedVel) {
    return AriaJavaJNI.ArRobot_isStopped__SWIG_2(swigCPtr, this, stoppedVel);
  }

  public boolean isStopped() {
    return AriaJavaJNI.ArRobot_isStopped__SWIG_3(swigCPtr, this);
  }

  public void setStoppedVels(double stoppedVel, double stoppedRotVel, double stoppedLatVel) {
    AriaJavaJNI.ArRobot_setStoppedVels(swigCPtr, this, stoppedVel, stoppedRotVel, stoppedLatVel);
  }

  public void setDirectMotionPrecedenceTime(int mSec) {
    AriaJavaJNI.ArRobot_setDirectMotionPrecedenceTime(swigCPtr, this, mSec);
  }

  public long getDirectMotionPrecedenceTime() {
    return AriaJavaJNI.ArRobot_getDirectMotionPrecedenceTime(swigCPtr, this);
  }

  public boolean com(short command) {
    return AriaJavaJNI.ArRobot_com(swigCPtr, this, command);
  }

  public boolean comInt(short command, short argument) {
    return AriaJavaJNI.ArRobot_comInt(swigCPtr, this, command, argument);
  }

  public boolean com2Bytes(short command, char high, char low) {
    return AriaJavaJNI.ArRobot_com2Bytes(swigCPtr, this, command, high, low);
  }

  public boolean comStr(short command, String argument) {
    return AriaJavaJNI.ArRobot_comStr(swigCPtr, this, command, argument);
  }

  public boolean comStrN(short command, String str, int size) {
    return AriaJavaJNI.ArRobot_comStrN(swigCPtr, this, command, str, size);
  }

  public boolean comDataN(short command, String data, int size) {
    return AriaJavaJNI.ArRobot_comDataN(swigCPtr, this, command, data, size);
  }

  public String getRobotName() {
    return AriaJavaJNI.ArRobot_getRobotName(swigCPtr, this);
  }

  public String getRobotType() {
    return AriaJavaJNI.ArRobot_getRobotType(swigCPtr, this);
  }

  public String getRobotSubType() {
    return AriaJavaJNI.ArRobot_getRobotSubType(swigCPtr, this);
  }

  public double getAbsoluteMaxTransVel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxTransVel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxTransVel(double maxVel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxTransVel(swigCPtr, this, maxVel);
  }

  public double getAbsoluteMaxTransNegVel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxTransNegVel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxTransNegVel(double maxVel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxTransNegVel(swigCPtr, this, maxVel);
  }

  public double getAbsoluteMaxTransAccel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxTransAccel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxTransAccel(double maxAccel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxTransAccel(swigCPtr, this, maxAccel);
  }

  public double getAbsoluteMaxTransDecel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxTransDecel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxTransDecel(double maxDecel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxTransDecel(swigCPtr, this, maxDecel);
  }

  public double getAbsoluteMaxRotVel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxRotVel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxRotVel(double maxVel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxRotVel(swigCPtr, this, maxVel);
  }

  public double getAbsoluteMaxRotAccel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxRotAccel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxRotAccel(double maxAccel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxRotAccel(swigCPtr, this, maxAccel);
  }

  public double getAbsoluteMaxRotDecel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxRotDecel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxRotDecel(double maxDecel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxRotDecel(swigCPtr, this, maxDecel);
  }

  public double getAbsoluteMaxLatVel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxLatVel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxLatVel(double maxVel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxLatVel(swigCPtr, this, maxVel);
  }

  public double getAbsoluteMaxLatAccel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxLatAccel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxLatAccel(double maxAccel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxLatAccel(swigCPtr, this, maxAccel);
  }

  public double getAbsoluteMaxLatDecel() {
    return AriaJavaJNI.ArRobot_getAbsoluteMaxLatDecel(swigCPtr, this);
  }

  public boolean setAbsoluteMaxLatDecel(double maxDecel) {
    return AriaJavaJNI.ArRobot_setAbsoluteMaxLatDecel(swigCPtr, this, maxDecel);
  }

  public ArPose getPose() {
    return new ArPose(AriaJavaJNI.ArRobot_getPose(swigCPtr, this), true);
  }

  public double getX() {
    return AriaJavaJNI.ArRobot_getX(swigCPtr, this);
  }

  public double getY() {
    return AriaJavaJNI.ArRobot_getY(swigCPtr, this);
  }

  public double getTh() {
    return AriaJavaJNI.ArRobot_getTh(swigCPtr, this);
  }

  public double findDistanceTo(ArPose pose) {
    return AriaJavaJNI.ArRobot_findDistanceTo(swigCPtr, this, ArPose.getCPtr(pose), pose);
  }

  public double findAngleTo(ArPose pose) {
    return AriaJavaJNI.ArRobot_findAngleTo(swigCPtr, this, ArPose.getCPtr(pose), pose);
  }

  public double findDeltaHeadingTo(ArPose pose) {
    return AriaJavaJNI.ArRobot_findDeltaHeadingTo(swigCPtr, this, ArPose.getCPtr(pose), pose);
  }

  public double getVel() {
    return AriaJavaJNI.ArRobot_getVel(swigCPtr, this);
  }

  public double getRotVel() {
    return AriaJavaJNI.ArRobot_getRotVel(swigCPtr, this);
  }

  public double getLatVel() {
    return AriaJavaJNI.ArRobot_getLatVel(swigCPtr, this);
  }

  public boolean hasLatVel() {
    return AriaJavaJNI.ArRobot_hasLatVel(swigCPtr, this);
  }

  public double getRobotRadius() {
    return AriaJavaJNI.ArRobot_getRobotRadius(swigCPtr, this);
  }

  public double getRobotWidth() {
    return AriaJavaJNI.ArRobot_getRobotWidth(swigCPtr, this);
  }

  public double getRobotLength() {
    return AriaJavaJNI.ArRobot_getRobotLength(swigCPtr, this);
  }

  public double getRobotLengthFront() {
    return AriaJavaJNI.ArRobot_getRobotLengthFront(swigCPtr, this);
  }

  public double getRobotLengthRear() {
    return AriaJavaJNI.ArRobot_getRobotLengthRear(swigCPtr, this);
  }

  public double getRobotDiagonal() {
    return AriaJavaJNI.ArRobot_getRobotDiagonal(swigCPtr, this);
  }

  public double getBatteryVoltage() {
    return AriaJavaJNI.ArRobot_getBatteryVoltage(swigCPtr, this);
  }

  public double getBatteryVoltageNow() {
    return AriaJavaJNI.ArRobot_getBatteryVoltageNow(swigCPtr, this);
  }

  public double getRealBatteryVoltage() {
    return AriaJavaJNI.ArRobot_getRealBatteryVoltage(swigCPtr, this);
  }

  public double getRealBatteryVoltageNow() {
    return AriaJavaJNI.ArRobot_getRealBatteryVoltageNow(swigCPtr, this);
  }

  public boolean haveStateOfCharge() {
    return AriaJavaJNI.ArRobot_haveStateOfCharge(swigCPtr, this);
  }

  public boolean hasStateOfCharge() {
    return AriaJavaJNI.ArRobot_hasStateOfCharge(swigCPtr, this);
  }

  public double getStateOfCharge() {
    return AriaJavaJNI.ArRobot_getStateOfCharge(swigCPtr, this);
  }

  public ArTime getStateOfChargeSetTime() {
    return new ArTime(AriaJavaJNI.ArRobot_getStateOfChargeSetTime(swigCPtr, this), true);
  }

  public double getStateOfChargeLow() {
    return AriaJavaJNI.ArRobot_getStateOfChargeLow(swigCPtr, this);
  }

  public double getStateOfChargeShutdown() {
    return AriaJavaJNI.ArRobot_getStateOfChargeShutdown(swigCPtr, this);
  }

  public double getLeftVel() {
    return AriaJavaJNI.ArRobot_getLeftVel(swigCPtr, this);
  }

  public double getRightVel() {
    return AriaJavaJNI.ArRobot_getRightVel(swigCPtr, this);
  }

  public int getStallValue() {
    return AriaJavaJNI.ArRobot_getStallValue(swigCPtr, this);
  }

  public boolean isLeftMotorStalled() {
    return AriaJavaJNI.ArRobot_isLeftMotorStalled(swigCPtr, this);
  }

  public boolean isRightMotorStalled() {
    return AriaJavaJNI.ArRobot_isRightMotorStalled(swigCPtr, this);
  }

  public boolean isFrontBumperTriggered() {
    return AriaJavaJNI.ArRobot_isFrontBumperTriggered(swigCPtr, this);
  }

  public boolean isRearBumperTriggered() {
    return AriaJavaJNI.ArRobot_isRearBumperTriggered(swigCPtr, this);
  }

  public double getControl() {
    return AriaJavaJNI.ArRobot_getControl(swigCPtr, this);
  }

  public void setKeepControlRaw(boolean keepControlRaw) {
    AriaJavaJNI.ArRobot_setKeepControlRaw(swigCPtr, this, keepControlRaw);
  }

  public boolean getKeepControlRaw() {
    return AriaJavaJNI.ArRobot_getKeepControlRaw(swigCPtr, this);
  }

  public int getFlags() {
    return AriaJavaJNI.ArRobot_getFlags(swigCPtr, this);
  }

  public int getFaultFlags() {
    return AriaJavaJNI.ArRobot_getFaultFlags(swigCPtr, this);
  }

  public boolean hasFaultFlags() {
    return AriaJavaJNI.ArRobot_hasFaultFlags(swigCPtr, this);
  }

  public int getFlags3() {
    return AriaJavaJNI.ArRobot_getFlags3(swigCPtr, this);
  }

  public boolean hasFlags3() {
    return AriaJavaJNI.ArRobot_hasFlags3(swigCPtr, this);
  }

  public boolean areMotorsEnabled() {
    return AriaJavaJNI.ArRobot_areMotorsEnabled(swigCPtr, this);
  }

  public boolean areSonarsEnabled() {
    return AriaJavaJNI.ArRobot_areSonarsEnabled(swigCPtr, this);
  }

  public boolean areAutonomousDrivingSonarsEnabled() {
    return AriaJavaJNI.ArRobot_areAutonomousDrivingSonarsEnabled(swigCPtr, this);
  }

  public boolean areSonarsEnabledLegacy() {
    return AriaJavaJNI.ArRobot_areSonarsEnabledLegacy(swigCPtr, this);
  }

  public boolean isEStopPressed() {
    return AriaJavaJNI.ArRobot_isEStopPressed(swigCPtr, this);
  }

  public boolean getEstop() {
    return AriaJavaJNI.ArRobot_getEstop(swigCPtr, this);
  }

  public double getCompass() {
    return AriaJavaJNI.ArRobot_getCompass(swigCPtr, this);
  }

  public int getAnalogPortSelected() {
    return AriaJavaJNI.ArRobot_getAnalogPortSelected(swigCPtr, this);
  }

  public short getAnalog() {
    return AriaJavaJNI.ArRobot_getAnalog(swigCPtr, this);
  }

  public short getDigIn() {
    return AriaJavaJNI.ArRobot_getDigIn(swigCPtr, this);
  }

  public short getDigOut() {
    return AriaJavaJNI.ArRobot_getDigOut(swigCPtr, this);
  }

  public ArRobot.ChargeState getChargeState() {
    return ArRobot.ChargeState.swigToEnum(AriaJavaJNI.ArRobot_getChargeState(swigCPtr, this));
  }

  public String getChargeStateName() {
    return AriaJavaJNI.ArRobot_getChargeStateName(swigCPtr, this);
  }

  public boolean isChargerPowerGood() {
    return AriaJavaJNI.ArRobot_isChargerPowerGood(swigCPtr, this);
  }

  public int getIOAnalogSize() {
    return AriaJavaJNI.ArRobot_getIOAnalogSize(swigCPtr, this);
  }

  public int getIODigInSize() {
    return AriaJavaJNI.ArRobot_getIODigInSize(swigCPtr, this);
  }

  public int getIODigOutSize() {
    return AriaJavaJNI.ArRobot_getIODigOutSize(swigCPtr, this);
  }

  public int getIOAnalog(int num) {
    return AriaJavaJNI.ArRobot_getIOAnalog(swigCPtr, this, num);
  }

  public double getIOAnalogVoltage(int num) {
    return AriaJavaJNI.ArRobot_getIOAnalogVoltage(swigCPtr, this, num);
  }

  public short getIODigIn(int num) {
    return AriaJavaJNI.ArRobot_getIODigIn(swigCPtr, this, num);
  }

  public short getIODigOut(int num) {
    return AriaJavaJNI.ArRobot_getIODigOut(swigCPtr, this, num);
  }

  public boolean hasTableSensingIR() {
    return AriaJavaJNI.ArRobot_hasTableSensingIR(swigCPtr, this);
  }

  public boolean isLeftTableSensingIRTriggered() {
    return AriaJavaJNI.ArRobot_isLeftTableSensingIRTriggered(swigCPtr, this);
  }

  public boolean isRightTableSensingIRTriggered() {
    return AriaJavaJNI.ArRobot_isRightTableSensingIRTriggered(swigCPtr, this);
  }

  public boolean isLeftBreakBeamTriggered() {
    return AriaJavaJNI.ArRobot_isLeftBreakBeamTriggered(swigCPtr, this);
  }

  public boolean isRightBreakBeamTriggered() {
    return AriaJavaJNI.ArRobot_isRightBreakBeamTriggered(swigCPtr, this);
  }

  public ArTime getIOPacketTime() {
    return new ArTime(AriaJavaJNI.ArRobot_getIOPacketTime(swigCPtr, this), true);
  }

  public boolean hasFrontBumpers() {
    return AriaJavaJNI.ArRobot_hasFrontBumpers(swigCPtr, this);
  }

  public long getNumFrontBumpers() {
    return AriaJavaJNI.ArRobot_getNumFrontBumpers(swigCPtr, this);
  }

  public boolean hasRearBumpers() {
    return AriaJavaJNI.ArRobot_hasRearBumpers(swigCPtr, this);
  }

  public long getNumRearBumpers() {
    return AriaJavaJNI.ArRobot_getNumRearBumpers(swigCPtr, this);
  }

  public ArPose getEncoderPose() {
    return new ArPose(AriaJavaJNI.ArRobot_getEncoderPose(swigCPtr, this), true);
  }

  public double getEncoderX() {
    return AriaJavaJNI.ArRobot_getEncoderX(swigCPtr, this);
  }

  public double getEncoderY() {
    return AriaJavaJNI.ArRobot_getEncoderY(swigCPtr, this);
  }

  public double getEncoderTh() {
    return AriaJavaJNI.ArRobot_getEncoderTh(swigCPtr, this);
  }

  public boolean isTryingToMove() {
    return AriaJavaJNI.ArRobot_isTryingToMove(swigCPtr, this);
  }

  public void forceTryingToMove() {
    AriaJavaJNI.ArRobot_forceTryingToMove(swigCPtr, this);
  }

  public int getMotorPacCount() {
    return AriaJavaJNI.ArRobot_getMotorPacCount(swigCPtr, this);
  }

  public int getSonarPacCount() {
    return AriaJavaJNI.ArRobot_getSonarPacCount(swigCPtr, this);
  }

  public int getSonarRange(int num) {
    return AriaJavaJNI.ArRobot_getSonarRange(swigCPtr, this, num);
  }

  public boolean isSonarNew(int num) {
    return AriaJavaJNI.ArRobot_isSonarNew(swigCPtr, this, num);
  }

  public int getNumSonar() {
    return AriaJavaJNI.ArRobot_getNumSonar(swigCPtr, this);
  }

  public ArSensorReading getSonarReading(int num) {
    long cPtr = AriaJavaJNI.ArRobot_getSonarReading(swigCPtr, this, num);
    return (cPtr == 0) ? null : new ArSensorReading(cPtr, false);
  }

  public int getClosestSonarRange(double startAngle, double endAngle) {
    return AriaJavaJNI.ArRobot_getClosestSonarRange(swigCPtr, this, startAngle, endAngle);
  }

  public int getClosestSonarNumber(double startAngle, double endAngle) {
    return AriaJavaJNI.ArRobot_getClosestSonarNumber(swigCPtr, this, startAngle, endAngle);
  }

  public String getName() {
    return AriaJavaJNI.ArRobot_getName(swigCPtr, this);
  }

  public void setName(String name) {
    AriaJavaJNI.ArRobot_setName(swigCPtr, this, name);
  }

  public void moveTo(ArPose pose, boolean doCumulative) {
    AriaJavaJNI.ArRobot_moveTo__SWIG_0(swigCPtr, this, ArPose.getCPtr(pose), pose, doCumulative);
  }

  public void moveTo(ArPose pose) {
    AriaJavaJNI.ArRobot_moveTo__SWIG_1(swigCPtr, this, ArPose.getCPtr(pose), pose);
  }

  public void moveTo(ArPose to, ArPose from, boolean doCumulative) {
    AriaJavaJNI.ArRobot_moveTo__SWIG_2(swigCPtr, this, ArPose.getCPtr(to), to, ArPose.getCPtr(from), from, doCumulative);
  }

  public void moveTo(ArPose to, ArPose from) {
    AriaJavaJNI.ArRobot_moveTo__SWIG_3(swigCPtr, this, ArPose.getCPtr(to), to, ArPose.getCPtr(from), from);
  }

  public void setStateOfCharge(double stateOfCharge) {
    AriaJavaJNI.ArRobot_setStateOfCharge(swigCPtr, this, stateOfCharge);
  }

  public void setStateOfChargeLow(double stateOfChargeLow) {
    AriaJavaJNI.ArRobot_setStateOfChargeLow(swigCPtr, this, stateOfChargeLow);
  }

  public void setStateOfChargeShutdown(double stateOfChargeShutdown) {
    AriaJavaJNI.ArRobot_setStateOfChargeShutdown(swigCPtr, this, stateOfChargeShutdown);
  }

  public void setChargeState(ArRobot.ChargeState chargeState) {
    AriaJavaJNI.ArRobot_setChargeState(swigCPtr, this, chargeState.swigValue());
  }

  public void setIsChargerPowerGood(boolean onCharger) {
    AriaJavaJNI.ArRobot_setIsChargerPowerGood(swigCPtr, this, onCharger);
  }

  public void setIgnoreMicroControllerBatteryInfo(boolean ignoreMicroControllerBatteryInfo) {
    AriaJavaJNI.ArRobot_setIgnoreMicroControllerBatteryInfo(swigCPtr, this, ignoreMicroControllerBatteryInfo);
  }

  public void setBatteryInfo(double realBatteryVoltage, double normalizedBatteryVoltage, boolean haveStateOfCharge, double stateOfCharge) {
    AriaJavaJNI.ArRobot_setBatteryInfo(swigCPtr, this, realBatteryVoltage, normalizedBatteryVoltage, haveStateOfCharge, stateOfCharge);
  }

  public long getBatteryVoltageAverageOfNum() {
    return AriaJavaJNI.ArRobot_getBatteryVoltageAverageOfNum(swigCPtr, this);
  }

  public void setBatteryVoltageAverageOfNum(long numToAverage) {
    AriaJavaJNI.ArRobot_setBatteryVoltageAverageOfNum(swigCPtr, this, numToAverage);
  }

  public long getRealBatteryVoltageAverageOfNum() {
    return AriaJavaJNI.ArRobot_getRealBatteryVoltageAverageOfNum(swigCPtr, this);
  }

  public void setRealBatteryVoltageAverageOfNum(long numToAverage) {
    AriaJavaJNI.ArRobot_setRealBatteryVoltageAverageOfNum(swigCPtr, this, numToAverage);
  }

  public boolean hasTemperature() {
    return AriaJavaJNI.ArRobot_hasTemperature(swigCPtr, this);
  }

  public int getTemperature() {
    return AriaJavaJNI.ArRobot_getTemperature(swigCPtr, this);
  }

  public void requestEncoderPackets() {
    AriaJavaJNI.ArRobot_requestEncoderPackets(swigCPtr, this);
  }

  public void requestIOPackets() {
    AriaJavaJNI.ArRobot_requestIOPackets(swigCPtr, this);
  }

  public void stopEncoderPackets() {
    AriaJavaJNI.ArRobot_stopEncoderPackets(swigCPtr, this);
  }

  public void stopIOPackets() {
    AriaJavaJNI.ArRobot_stopIOPackets(swigCPtr, this);
  }

  public boolean haveRequestedEncoderPackets() {
    return AriaJavaJNI.ArRobot_haveRequestedEncoderPackets(swigCPtr, this);
  }

  public boolean haveRequestedIOPackets() {
    return AriaJavaJNI.ArRobot_haveRequestedIOPackets(swigCPtr, this);
  }

  public int getLeftEncoder() {
    return AriaJavaJNI.ArRobot_getLeftEncoder(swigCPtr, this);
  }

  public int getRightEncoder() {
    return AriaJavaJNI.ArRobot_getRightEncoder(swigCPtr, this);
  }

  public void setEncoderTransform(ArPose deadReconPos, ArPose globalPos) {
    AriaJavaJNI.ArRobot_setEncoderTransform__SWIG_0(swigCPtr, this, ArPose.getCPtr(deadReconPos), deadReconPos, ArPose.getCPtr(globalPos), globalPos);
  }

  public void setEncoderTransform(ArPose transformPos) {
    AriaJavaJNI.ArRobot_setEncoderTransform__SWIG_1(swigCPtr, this, ArPose.getCPtr(transformPos), transformPos);
  }

  public void setEncoderTransform(ArTransform transform) {
    AriaJavaJNI.ArRobot_setEncoderTransform__SWIG_2(swigCPtr, this, ArTransform.getCPtr(transform), transform);
  }

  public void setEncoderPose(ArPose encoderPose) {
    AriaJavaJNI.ArRobot_setEncoderPose(swigCPtr, this, ArPose.getCPtr(encoderPose), encoderPose);
  }

  public void setRawEncoderPose(ArPose rawEncoderPose) {
    AriaJavaJNI.ArRobot_setRawEncoderPose(swigCPtr, this, ArPose.getCPtr(rawEncoderPose), rawEncoderPose);
  }

  public void addSetEncoderTransformCB(ArFunctor functor, int position) {
    AriaJavaJNI.ArRobot_addSetEncoderTransformCB__SWIG_0(swigCPtr, this, ArFunctor.getCPtr(functor), functor, position);
  }

  public void addSetEncoderTransformCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_addSetEncoderTransformCB__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void remSetEncoderTransformCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remSetEncoderTransformCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void setMTXTimeUSecCB(SWIGTYPE_p_ArRetFunctor1T_bool_unsigned_int_p_t functor) {
    AriaJavaJNI.ArRobot_setMTXTimeUSecCB(swigCPtr, this, SWIGTYPE_p_ArRetFunctor1T_bool_unsigned_int_p_t.getCPtr(functor));
  }

  public ArTransform getEncoderTransform() {
    return new ArTransform(AriaJavaJNI.ArRobot_getEncoderTransform(swigCPtr, this), true);
  }

  public ArTransform getToGlobalTransform() {
    return new ArTransform(AriaJavaJNI.ArRobot_getToGlobalTransform(swigCPtr, this), true);
  }

  public ArTransform getToLocalTransform() {
    return new ArTransform(AriaJavaJNI.ArRobot_getToLocalTransform(swigCPtr, this), true);
  }

  public void applyTransform(ArTransform trans, boolean doCumulative) {
    AriaJavaJNI.ArRobot_applyTransform__SWIG_0(swigCPtr, this, ArTransform.getCPtr(trans), trans, doCumulative);
  }

  public void applyTransform(ArTransform trans) {
    AriaJavaJNI.ArRobot_applyTransform__SWIG_1(swigCPtr, this, ArTransform.getCPtr(trans), trans);
  }

  public void setDeadReconPose(ArPose pose) {
    AriaJavaJNI.ArRobot_setDeadReconPose(swigCPtr, this, ArPose.getCPtr(pose), pose);
  }

  public double getTripOdometerDistance() {
    return AriaJavaJNI.ArRobot_getTripOdometerDistance(swigCPtr, this);
  }

  public double getTripOdometerDegrees() {
    return AriaJavaJNI.ArRobot_getTripOdometerDegrees(swigCPtr, this);
  }

  public double getTripOdometerTime() {
    return AriaJavaJNI.ArRobot_getTripOdometerTime(swigCPtr, this);
  }

  public void resetTripOdometer() {
    AriaJavaJNI.ArRobot_resetTripOdometer(swigCPtr, this);
  }

  public double getOdometerDistance() {
    return AriaJavaJNI.ArRobot_getOdometerDistance(swigCPtr, this);
  }

  public double getOdometerDistanceMeters() {
    return AriaJavaJNI.ArRobot_getOdometerDistanceMeters(swigCPtr, this);
  }

  public double getOdometerDegrees() {
    return AriaJavaJNI.ArRobot_getOdometerDegrees(swigCPtr, this);
  }

  public double getOdometerTime() {
    return AriaJavaJNI.ArRobot_getOdometerTime(swigCPtr, this);
  }

  public double getOdometerTimeMinutes() {
    return AriaJavaJNI.ArRobot_getOdometerTimeMinutes(swigCPtr, this);
  }

  public void addRangeDevice(ArRangeDevice device) {
    AriaJavaJNI.ArRobot_addRangeDevice(swigCPtr, this, ArRangeDevice.getCPtr(device), device);
  }

  public void remRangeDevice(String name) {
    AriaJavaJNI.ArRobot_remRangeDevice__SWIG_0(swigCPtr, this, name);
  }

  public void remRangeDevice(ArRangeDevice device) {
    AriaJavaJNI.ArRobot_remRangeDevice__SWIG_1(swigCPtr, this, ArRangeDevice.getCPtr(device), device);
  }

  public ArRangeDevice findRangeDevice(String name, boolean ignoreCase) {
    long cPtr = AriaJavaJNI.ArRobot_findRangeDevice__SWIG_0(swigCPtr, this, name, ignoreCase);
    return (cPtr == 0) ? null : new ArRangeDevice(cPtr, false);
  }

  public ArRangeDevice findRangeDevice(String name) {
    long cPtr = AriaJavaJNI.ArRobot_findRangeDevice__SWIG_1(swigCPtr, this, name);
    return (cPtr == 0) ? null : new ArRangeDevice(cPtr, false);
  }

  public ArRangeDevicePtrList getRangeDeviceList() {
    long cPtr = AriaJavaJNI.ArRobot_getRangeDeviceList(swigCPtr, this);
    return (cPtr == 0) ? null : new ArRangeDevicePtrList(cPtr, false);
  }

  public boolean hasRangeDevice(ArRangeDevice device) {
    return AriaJavaJNI.ArRobot_hasRangeDevice(swigCPtr, this, ArRangeDevice.getCPtr(device), device);
  }

  public double checkRangeDevicesCurrentPolar(double startAngle, double endAngle, SWIGTYPE_p_double angle, SWIGTYPE_p_p_ArRangeDevice rangeDevice, boolean useLocationDependentDevices) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCurrentPolar__SWIG_0(swigCPtr, this, startAngle, endAngle, SWIGTYPE_p_double.getCPtr(angle), SWIGTYPE_p_p_ArRangeDevice.getCPtr(rangeDevice), useLocationDependentDevices);
  }

  public double checkRangeDevicesCurrentPolar(double startAngle, double endAngle, SWIGTYPE_p_double angle, SWIGTYPE_p_p_ArRangeDevice rangeDevice) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCurrentPolar__SWIG_1(swigCPtr, this, startAngle, endAngle, SWIGTYPE_p_double.getCPtr(angle), SWIGTYPE_p_p_ArRangeDevice.getCPtr(rangeDevice));
  }

  public double checkRangeDevicesCurrentPolar(double startAngle, double endAngle, SWIGTYPE_p_double angle) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCurrentPolar__SWIG_2(swigCPtr, this, startAngle, endAngle, SWIGTYPE_p_double.getCPtr(angle));
  }

  public double checkRangeDevicesCurrentPolar(double startAngle, double endAngle) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCurrentPolar__SWIG_3(swigCPtr, this, startAngle, endAngle);
  }

  public double checkRangeDevicesCumulativePolar(double startAngle, double endAngle, SWIGTYPE_p_double angle, SWIGTYPE_p_p_ArRangeDevice rangeDevice, boolean useLocationDependentDevices) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCumulativePolar__SWIG_0(swigCPtr, this, startAngle, endAngle, SWIGTYPE_p_double.getCPtr(angle), SWIGTYPE_p_p_ArRangeDevice.getCPtr(rangeDevice), useLocationDependentDevices);
  }

  public double checkRangeDevicesCumulativePolar(double startAngle, double endAngle, SWIGTYPE_p_double angle, SWIGTYPE_p_p_ArRangeDevice rangeDevice) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCumulativePolar__SWIG_1(swigCPtr, this, startAngle, endAngle, SWIGTYPE_p_double.getCPtr(angle), SWIGTYPE_p_p_ArRangeDevice.getCPtr(rangeDevice));
  }

  public double checkRangeDevicesCumulativePolar(double startAngle, double endAngle, SWIGTYPE_p_double angle) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCumulativePolar__SWIG_2(swigCPtr, this, startAngle, endAngle, SWIGTYPE_p_double.getCPtr(angle));
  }

  public double checkRangeDevicesCumulativePolar(double startAngle, double endAngle) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCumulativePolar__SWIG_3(swigCPtr, this, startAngle, endAngle);
  }

  public double checkRangeDevicesCurrentBox(double x1, double y1, double x2, double y2, ArPose readingPos, SWIGTYPE_p_p_ArRangeDevice rangeDevice, boolean useLocationDependentDevices) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCurrentBox__SWIG_0(swigCPtr, this, x1, y1, x2, y2, ArPose.getCPtr(readingPos), readingPos, SWIGTYPE_p_p_ArRangeDevice.getCPtr(rangeDevice), useLocationDependentDevices);
  }

  public double checkRangeDevicesCurrentBox(double x1, double y1, double x2, double y2, ArPose readingPos, SWIGTYPE_p_p_ArRangeDevice rangeDevice) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCurrentBox__SWIG_1(swigCPtr, this, x1, y1, x2, y2, ArPose.getCPtr(readingPos), readingPos, SWIGTYPE_p_p_ArRangeDevice.getCPtr(rangeDevice));
  }

  public double checkRangeDevicesCurrentBox(double x1, double y1, double x2, double y2, ArPose readingPos) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCurrentBox__SWIG_2(swigCPtr, this, x1, y1, x2, y2, ArPose.getCPtr(readingPos), readingPos);
  }

  public double checkRangeDevicesCurrentBox(double x1, double y1, double x2, double y2) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCurrentBox__SWIG_3(swigCPtr, this, x1, y1, x2, y2);
  }

  public double checkRangeDevicesCumulativeBox(double x1, double y1, double x2, double y2, ArPose readingPos, SWIGTYPE_p_p_ArRangeDevice rangeDevice, boolean useLocationDependentDevices) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCumulativeBox__SWIG_0(swigCPtr, this, x1, y1, x2, y2, ArPose.getCPtr(readingPos), readingPos, SWIGTYPE_p_p_ArRangeDevice.getCPtr(rangeDevice), useLocationDependentDevices);
  }

  public double checkRangeDevicesCumulativeBox(double x1, double y1, double x2, double y2, ArPose readingPos, SWIGTYPE_p_p_ArRangeDevice rangeDevice) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCumulativeBox__SWIG_1(swigCPtr, this, x1, y1, x2, y2, ArPose.getCPtr(readingPos), readingPos, SWIGTYPE_p_p_ArRangeDevice.getCPtr(rangeDevice));
  }

  public double checkRangeDevicesCumulativeBox(double x1, double y1, double x2, double y2, ArPose readingPos) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCumulativeBox__SWIG_2(swigCPtr, this, x1, y1, x2, y2, ArPose.getCPtr(readingPos), readingPos);
  }

  public double checkRangeDevicesCumulativeBox(double x1, double y1, double x2, double y2) {
    return AriaJavaJNI.ArRobot_checkRangeDevicesCumulativeBox__SWIG_3(swigCPtr, this, x1, y1, x2, y2);
  }

  public boolean addLaser(ArLaser laser, int laserNumber, boolean addAsRangeDevice) {
    return AriaJavaJNI.ArRobot_addLaser__SWIG_0(swigCPtr, this, ArLaser.getCPtr(laser), laser, laserNumber, addAsRangeDevice);
  }

  public boolean addLaser(ArLaser laser, int laserNumber) {
    return AriaJavaJNI.ArRobot_addLaser__SWIG_1(swigCPtr, this, ArLaser.getCPtr(laser), laser, laserNumber);
  }

  public boolean remLaser(ArLaser laser, boolean removeAsRangeDevice) {
    return AriaJavaJNI.ArRobot_remLaser__SWIG_0(swigCPtr, this, ArLaser.getCPtr(laser), laser, removeAsRangeDevice);
  }

  public boolean remLaser(ArLaser laser) {
    return AriaJavaJNI.ArRobot_remLaser__SWIG_1(swigCPtr, this, ArLaser.getCPtr(laser), laser);
  }

  public boolean remLaser(int laserNumber, boolean removeAsRangeDevice) {
    return AriaJavaJNI.ArRobot_remLaser__SWIG_2(swigCPtr, this, laserNumber, removeAsRangeDevice);
  }

  public boolean remLaser(int laserNumber) {
    return AriaJavaJNI.ArRobot_remLaser__SWIG_3(swigCPtr, this, laserNumber);
  }

  public ArLaser findLaser(int laserNumber) {
    long cPtr = AriaJavaJNI.ArRobot_findLaser__SWIG_0(swigCPtr, this, laserNumber);
    return (cPtr == 0) ? null : new ArLaser(cPtr, false);
  }

  public SWIGTYPE_p_std__mapT_int_ArLaser_p_t getLaserMap() {
    long cPtr = AriaJavaJNI.ArRobot_getLaserMap__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_std__mapT_int_ArLaser_p_t(cPtr, false);
  }

  public boolean hasLaser(ArLaser device) {
    return AriaJavaJNI.ArRobot_hasLaser(swigCPtr, this, ArLaser.getCPtr(device), device);
  }

  public long getNumLasers() {
    return AriaJavaJNI.ArRobot_getNumLasers(swigCPtr, this);
  }

  public boolean addBattery(SWIGTYPE_p_ArBatteryMTX battery, int batteryNumber) {
    return AriaJavaJNI.ArRobot_addBattery(swigCPtr, this, SWIGTYPE_p_ArBatteryMTX.getCPtr(battery), batteryNumber);
  }

  public boolean remBattery(SWIGTYPE_p_ArBatteryMTX battery) {
    return AriaJavaJNI.ArRobot_remBattery__SWIG_0(swigCPtr, this, SWIGTYPE_p_ArBatteryMTX.getCPtr(battery));
  }

  public boolean remBattery(int batteryNumber) {
    return AriaJavaJNI.ArRobot_remBattery__SWIG_1(swigCPtr, this, batteryNumber);
  }

  public SWIGTYPE_p_ArBatteryMTX findBattery(int batteryNumber) {
    long cPtr = AriaJavaJNI.ArRobot_findBattery__SWIG_0(swigCPtr, this, batteryNumber);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArBatteryMTX(cPtr, false);
  }

  public SWIGTYPE_p_std__mapT_int_ArBatteryMTX_p_t getBatteryMap() {
    long cPtr = AriaJavaJNI.ArRobot_getBatteryMap__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_std__mapT_int_ArBatteryMTX_p_t(cPtr, false);
  }

  public boolean hasBattery(SWIGTYPE_p_ArBatteryMTX device) {
    return AriaJavaJNI.ArRobot_hasBattery(swigCPtr, this, SWIGTYPE_p_ArBatteryMTX.getCPtr(device));
  }

  public boolean addLCD(SWIGTYPE_p_ArLCDMTX lcd, int lcdNumber) {
    return AriaJavaJNI.ArRobot_addLCD(swigCPtr, this, SWIGTYPE_p_ArLCDMTX.getCPtr(lcd), lcdNumber);
  }

  public boolean remLCD(SWIGTYPE_p_ArLCDMTX lcd) {
    return AriaJavaJNI.ArRobot_remLCD__SWIG_0(swigCPtr, this, SWIGTYPE_p_ArLCDMTX.getCPtr(lcd));
  }

  public boolean remLCD(int lcdNumber) {
    return AriaJavaJNI.ArRobot_remLCD__SWIG_1(swigCPtr, this, lcdNumber);
  }

  public SWIGTYPE_p_ArLCDMTX findLCD(int lcdNumber) {
    long cPtr = AriaJavaJNI.ArRobot_findLCD__SWIG_0(swigCPtr, this, lcdNumber);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArLCDMTX(cPtr, false);
  }

  public SWIGTYPE_p_ArLCDMTX findLCD() {
    long cPtr = AriaJavaJNI.ArRobot_findLCD__SWIG_1(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArLCDMTX(cPtr, false);
  }

  public SWIGTYPE_p_std__mapT_int_ArLCDMTX_p_t getLCDMap() {
    long cPtr = AriaJavaJNI.ArRobot_getLCDMap__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_std__mapT_int_ArLCDMTX_p_t(cPtr, false);
  }

  public boolean hasLCD(SWIGTYPE_p_ArLCDMTX device) {
    return AriaJavaJNI.ArRobot_hasLCD(swigCPtr, this, SWIGTYPE_p_ArLCDMTX.getCPtr(device));
  }

  public boolean addSonar(SWIGTYPE_p_ArSonarMTX sonar, int sonarNumber) {
    return AriaJavaJNI.ArRobot_addSonar(swigCPtr, this, SWIGTYPE_p_ArSonarMTX.getCPtr(sonar), sonarNumber);
  }

  public boolean remSonar(SWIGTYPE_p_ArSonarMTX sonar) {
    return AriaJavaJNI.ArRobot_remSonar__SWIG_0(swigCPtr, this, SWIGTYPE_p_ArSonarMTX.getCPtr(sonar));
  }

  public boolean remSonar(int sonarNumber) {
    return AriaJavaJNI.ArRobot_remSonar__SWIG_1(swigCPtr, this, sonarNumber);
  }

  public SWIGTYPE_p_ArSonarMTX findSonar(int sonarNumber) {
    long cPtr = AriaJavaJNI.ArRobot_findSonar__SWIG_0(swigCPtr, this, sonarNumber);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArSonarMTX(cPtr, false);
  }

  public SWIGTYPE_p_std__mapT_int_ArSonarMTX_p_t getSonarMap() {
    long cPtr = AriaJavaJNI.ArRobot_getSonarMap__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_std__mapT_int_ArSonarMTX_p_t(cPtr, false);
  }

  public boolean hasSonar(SWIGTYPE_p_ArSonarMTX device) {
    return AriaJavaJNI.ArRobot_hasSonar(swigCPtr, this, SWIGTYPE_p_ArSonarMTX.getCPtr(device));
  }

  public void setPTZ(ArPTZ ptz) {
    AriaJavaJNI.ArRobot_setPTZ(swigCPtr, this, ArPTZ.getCPtr(ptz), ptz);
  }

  public ArPTZ getPTZ() {
    long cPtr = AriaJavaJNI.ArRobot_getPTZ(swigCPtr, this);
    return (cPtr == 0) ? null : new ArPTZ(cPtr, false);
  }

  public void setStateReflectionRefreshTime(int msec) {
    AriaJavaJNI.ArRobot_setStateReflectionRefreshTime(swigCPtr, this, msec);
  }

  public int getStateReflectionRefreshTime() {
    return AriaJavaJNI.ArRobot_getStateReflectionRefreshTime(swigCPtr, this);
  }

  public void addPacketHandler(ArRetFunctor1_Bool_ArRobotPacketP functor, ArListPos.Pos position) {
    AriaJavaJNI.ArRobot_addPacketHandler__SWIG_0(swigCPtr, this, ArRetFunctor1_Bool_ArRobotPacketP.getCPtr(functor), functor, position.swigValue());
  }

  public void addPacketHandler(ArRetFunctor1_Bool_ArRobotPacketP functor) {
    AriaJavaJNI.ArRobot_addPacketHandler__SWIG_1(swigCPtr, this, ArRetFunctor1_Bool_ArRobotPacketP.getCPtr(functor), functor);
  }

  public void remPacketHandler(ArRetFunctor1_Bool_ArRobotPacketP functor) {
    AriaJavaJNI.ArRobot_remPacketHandler(swigCPtr, this, ArRetFunctor1_Bool_ArRobotPacketP.getCPtr(functor), functor);
  }

  public void addConnectCB(ArFunctor functor, ArListPos.Pos position) {
    AriaJavaJNI.ArRobot_addConnectCB__SWIG_0(swigCPtr, this, ArFunctor.getCPtr(functor), functor, position.swigValue());
  }

  public void addConnectCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_addConnectCB__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void remConnectCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remConnectCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void addFailedConnectCB(ArFunctor functor, ArListPos.Pos position) {
    AriaJavaJNI.ArRobot_addFailedConnectCB__SWIG_0(swigCPtr, this, ArFunctor.getCPtr(functor), functor, position.swigValue());
  }

  public void addFailedConnectCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_addFailedConnectCB__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void remFailedConnectCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remFailedConnectCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void addDisconnectNormallyCB(ArFunctor functor, ArListPos.Pos position) {
    AriaJavaJNI.ArRobot_addDisconnectNormallyCB__SWIG_0(swigCPtr, this, ArFunctor.getCPtr(functor), functor, position.swigValue());
  }

  public void addDisconnectNormallyCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_addDisconnectNormallyCB__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void remDisconnectNormallyCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remDisconnectNormallyCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void addDisconnectOnErrorCB(ArFunctor functor, ArListPos.Pos position) {
    AriaJavaJNI.ArRobot_addDisconnectOnErrorCB__SWIG_0(swigCPtr, this, ArFunctor.getCPtr(functor), functor, position.swigValue());
  }

  public void addDisconnectOnErrorCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_addDisconnectOnErrorCB__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void remDisconnectOnErrorCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remDisconnectOnErrorCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void addRunExitCB(ArFunctor functor, ArListPos.Pos position) {
    AriaJavaJNI.ArRobot_addRunExitCB__SWIG_0(swigCPtr, this, ArFunctor.getCPtr(functor), functor, position.swigValue());
  }

  public void addRunExitCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_addRunExitCB__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void remRunExitCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remRunExitCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public ArRobot.WaitState waitForConnect(long msecs) {
    return ArRobot.WaitState.swigToEnum(AriaJavaJNI.ArRobot_waitForConnect__SWIG_0(swigCPtr, this, msecs));
  }

  public ArRobot.WaitState waitForConnect() {
    return ArRobot.WaitState.swigToEnum(AriaJavaJNI.ArRobot_waitForConnect__SWIG_1(swigCPtr, this));
  }

  public ArRobot.WaitState waitForConnectOrConnFail(long msecs) {
    return ArRobot.WaitState.swigToEnum(AriaJavaJNI.ArRobot_waitForConnectOrConnFail__SWIG_0(swigCPtr, this, msecs));
  }

  public ArRobot.WaitState waitForConnectOrConnFail() {
    return ArRobot.WaitState.swigToEnum(AriaJavaJNI.ArRobot_waitForConnectOrConnFail__SWIG_1(swigCPtr, this));
  }

  public ArRobot.WaitState waitForRunExit(long msecs) {
    return ArRobot.WaitState.swigToEnum(AriaJavaJNI.ArRobot_waitForRunExit__SWIG_0(swigCPtr, this, msecs));
  }

  public ArRobot.WaitState waitForRunExit() {
    return ArRobot.WaitState.swigToEnum(AriaJavaJNI.ArRobot_waitForRunExit__SWIG_1(swigCPtr, this));
  }

  public void wakeAllWaitingThreads() {
    AriaJavaJNI.ArRobot_wakeAllWaitingThreads(swigCPtr, this);
  }

  public void wakeAllConnWaitingThreads() {
    AriaJavaJNI.ArRobot_wakeAllConnWaitingThreads(swigCPtr, this);
  }

  public void wakeAllConnOrFailWaitingThreads() {
    AriaJavaJNI.ArRobot_wakeAllConnOrFailWaitingThreads(swigCPtr, this);
  }

  public void wakeAllRunExitWaitingThreads() {
    AriaJavaJNI.ArRobot_wakeAllRunExitWaitingThreads(swigCPtr, this);
  }

  public boolean addUserTask(String name, int position, ArFunctor functor, SWIGTYPE_p_ArTaskState__State state) {
    return AriaJavaJNI.ArRobot_addUserTask__SWIG_0(swigCPtr, this, name, position, ArFunctor.getCPtr(functor), functor, SWIGTYPE_p_ArTaskState__State.getCPtr(state));
  }

  public boolean addUserTask(String name, int position, ArFunctor functor) {
    return AriaJavaJNI.ArRobot_addUserTask__SWIG_1(swigCPtr, this, name, position, ArFunctor.getCPtr(functor), functor);
  }

  public void remUserTask(String name) {
    AriaJavaJNI.ArRobot_remUserTask__SWIG_0(swigCPtr, this, name);
  }

  public void remUserTask(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remUserTask__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public ArSyncTask findUserTask(String name) {
    long cPtr = AriaJavaJNI.ArRobot_findUserTask__SWIG_0(swigCPtr, this, name);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public ArSyncTask findUserTask(ArFunctor functor) {
    long cPtr = AriaJavaJNI.ArRobot_findUserTask__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public void logUserTasks() {
    AriaJavaJNI.ArRobot_logUserTasks(swigCPtr, this);
  }

  public void logAllTasks() {
    AriaJavaJNI.ArRobot_logAllTasks(swigCPtr, this);
  }

  public boolean addSensorInterpTask(String name, int position, ArFunctor functor, SWIGTYPE_p_ArTaskState__State state) {
    return AriaJavaJNI.ArRobot_addSensorInterpTask__SWIG_0(swigCPtr, this, name, position, ArFunctor.getCPtr(functor), functor, SWIGTYPE_p_ArTaskState__State.getCPtr(state));
  }

  public boolean addSensorInterpTask(String name, int position, ArFunctor functor) {
    return AriaJavaJNI.ArRobot_addSensorInterpTask__SWIG_1(swigCPtr, this, name, position, ArFunctor.getCPtr(functor), functor);
  }

  public void remSensorInterpTask(String name) {
    AriaJavaJNI.ArRobot_remSensorInterpTask__SWIG_0(swigCPtr, this, name);
  }

  public void remSensorInterpTask(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remSensorInterpTask__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public ArSyncTask findTask(String name) {
    long cPtr = AriaJavaJNI.ArRobot_findTask__SWIG_0(swigCPtr, this, name);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public ArSyncTask findTask(ArFunctor functor) {
    long cPtr = AriaJavaJNI.ArRobot_findTask__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public boolean addAction(ArAction action, int priority) {
    return AriaJavaJNI.ArRobot_addAction(swigCPtr, this, ArAction.getCPtr(action), action, priority);
  }

  public boolean remAction(ArAction action) {
    return AriaJavaJNI.ArRobot_remAction__SWIG_0(swigCPtr, this, ArAction.getCPtr(action), action);
  }

  public boolean remAction(String actionName) {
    return AriaJavaJNI.ArRobot_remAction__SWIG_1(swigCPtr, this, actionName);
  }

  public ArAction findAction(String actionName) {
    long cPtr = AriaJavaJNI.ArRobot_findAction(swigCPtr, this, actionName);
    return (cPtr == 0) ? null : new ArAction(cPtr, false);
  }

  public SWIGTYPE_p_std__multimapT_int_ArAction_p_t getActionMap() {
    long cPtr = AriaJavaJNI.ArRobot_getActionMap(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_std__multimapT_int_ArAction_p_t(cPtr, false);
  }

  public void deactivateActions() {
    AriaJavaJNI.ArRobot_deactivateActions(swigCPtr, this);
  }

  public void logActions(boolean logDeactivated) {
    AriaJavaJNI.ArRobot_logActions__SWIG_0(swigCPtr, this, logDeactivated);
  }

  public void logActions() {
    AriaJavaJNI.ArRobot_logActions__SWIG_1(swigCPtr, this);
  }

  public ArResolver getResolver() {
    long cPtr = AriaJavaJNI.ArRobot_getResolver(swigCPtr, this);
    return (cPtr == 0) ? null : new ArResolver(cPtr, false);
  }

  public void setResolver(ArResolver resolver) {
    AriaJavaJNI.ArRobot_setResolver(swigCPtr, this, ArResolver.getCPtr(resolver), resolver);
  }

  public ArActionDesired getLastActionResolverOutput() {
    long cPtr = AriaJavaJNI.ArRobot_getLastActionResolverOutput(swigCPtr, this);
    return (cPtr == 0) ? null : new ArActionDesired(cPtr, false);
  }

  public void setEncoderCorrectionCallback(ArRetFunctor1_Double_ArPoseWithTime functor) {
    AriaJavaJNI.ArRobot_setEncoderCorrectionCallback(swigCPtr, this, ArRetFunctor1_Double_ArPoseWithTime.getCPtr(functor), functor);
  }

  public ArRetFunctor1_Double_ArPoseWithTime getEncoderCorrectionCallback() {
    long cPtr = AriaJavaJNI.ArRobot_getEncoderCorrectionCallback(swigCPtr, this);
    return (cPtr == 0) ? null : new ArRetFunctor1_Double_ArPoseWithTime(cPtr, false);
  }

  public ArTime getConnectionOpenedTime() {
    return new ArTime(AriaJavaJNI.ArRobot_getConnectionOpenedTime(swigCPtr, this), true);
  }

  public void setCycleTime(long ms) {
    AriaJavaJNI.ArRobot_setCycleTime(swigCPtr, this, ms);
  }

  public long getCycleTime() {
    return AriaJavaJNI.ArRobot_getCycleTime(swigCPtr, this);
  }

  public void setCycleWarningTime(long ms) {
    AriaJavaJNI.ArRobot_setCycleWarningTime(swigCPtr, this, ms);
  }

  public long getCycleWarningTime() {
    return AriaJavaJNI.ArRobot_getCycleWarningTime__SWIG_0(swigCPtr, this);
  }

  public void setConnectionCycleMultiplier(long multiplier) {
    AriaJavaJNI.ArRobot_setConnectionCycleMultiplier(swigCPtr, this, multiplier);
  }

  public long getConnectionCycleMultiplier() {
    return AriaJavaJNI.ArRobot_getConnectionCycleMultiplier(swigCPtr, this);
  }

  public void setAsyncConnectSyncPacketRetries(int t) {
    AriaJavaJNI.ArRobot_setAsyncConnectSyncPacketRetries(swigCPtr, this, t);
  }

  public void setCycleChained(boolean cycleChained) {
    AriaJavaJNI.ArRobot_setCycleChained(swigCPtr, this, cycleChained);
  }

  public boolean isCycleChained() {
    return AriaJavaJNI.ArRobot_isCycleChained(swigCPtr, this);
  }

  public void setConnectionTimeoutTime(int mSecs) {
    AriaJavaJNI.ArRobot_setConnectionTimeoutTime(swigCPtr, this, mSecs);
  }

  public int getConnectionTimeoutTime() {
    return AriaJavaJNI.ArRobot_getConnectionTimeoutTime(swigCPtr, this);
  }

  public ArTime getLastPacketTime() {
    return new ArTime(AriaJavaJNI.ArRobot_getLastPacketTime(swigCPtr, this), true);
  }

  public ArTime getLastOdometryTime() {
    return new ArTime(AriaJavaJNI.ArRobot_getLastOdometryTime(swigCPtr, this), true);
  }

  public void setPoseInterpNumReadings(long numReadings) {
    AriaJavaJNI.ArRobot_setPoseInterpNumReadings(swigCPtr, this, numReadings);
  }

  public long getPoseInterpNumReadings() {
    return AriaJavaJNI.ArRobot_getPoseInterpNumReadings(swigCPtr, this);
  }

  public int getPoseInterpPosition(ArTime timeStamp, ArPose position, ArPoseWithTime mostRecent) {
    return AriaJavaJNI.ArRobot_getPoseInterpPosition__SWIG_0(swigCPtr, this, ArTime.getCPtr(timeStamp), timeStamp, ArPose.getCPtr(position), position, ArPoseWithTime.getCPtr(mostRecent), mostRecent);
  }

  public int getPoseInterpPosition(ArTime timeStamp, ArPose position) {
    return AriaJavaJNI.ArRobot_getPoseInterpPosition__SWIG_1(swigCPtr, this, ArTime.getCPtr(timeStamp), timeStamp, ArPose.getCPtr(position), position);
  }

  public ArInterpolation getPoseInterpolation() {
    long cPtr = AriaJavaJNI.ArRobot_getPoseInterpolation(swigCPtr, this);
    return (cPtr == 0) ? null : new ArInterpolation(cPtr, false);
  }

  public SWIGTYPE_p_ArRetFunctor3T_int_ArTime_ArPose_p_ArPoseWithTime_p_t getPoseInterpPositionCallback() {
    long cPtr = AriaJavaJNI.ArRobot_getPoseInterpPositionCallback(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArRetFunctor3T_int_ArTime_ArPose_p_ArPoseWithTime_p_t(cPtr, false);
  }

  public void setEncoderPoseInterpNumReadings(long numReadings) {
    AriaJavaJNI.ArRobot_setEncoderPoseInterpNumReadings(swigCPtr, this, numReadings);
  }

  public long getEncoderPoseInterpNumReadings() {
    return AriaJavaJNI.ArRobot_getEncoderPoseInterpNumReadings(swigCPtr, this);
  }

  public int getEncoderPoseInterpPosition(ArTime timeStamp, ArPose position, ArPoseWithTime mostRecent) {
    return AriaJavaJNI.ArRobot_getEncoderPoseInterpPosition__SWIG_0(swigCPtr, this, ArTime.getCPtr(timeStamp), timeStamp, ArPose.getCPtr(position), position, ArPoseWithTime.getCPtr(mostRecent), mostRecent);
  }

  public int getEncoderPoseInterpPosition(ArTime timeStamp, ArPose position) {
    return AriaJavaJNI.ArRobot_getEncoderPoseInterpPosition__SWIG_1(swigCPtr, this, ArTime.getCPtr(timeStamp), timeStamp, ArPose.getCPtr(position), position);
  }

  public ArInterpolation getEncoderPoseInterpolation() {
    long cPtr = AriaJavaJNI.ArRobot_getEncoderPoseInterpolation(swigCPtr, this);
    return (cPtr == 0) ? null : new ArInterpolation(cPtr, false);
  }

  public SWIGTYPE_p_ArRetFunctor3T_int_ArTime_ArPose_p_ArPoseWithTime_p_t getEncoderPoseInterpPositionCallback() {
    long cPtr = AriaJavaJNI.ArRobot_getEncoderPoseInterpPositionCallback(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArRetFunctor3T_int_ArTime_ArPose_p_ArPoseWithTime_p_t(cPtr, false);
  }

  public int applyEncoderOffset(ArPoseWithTime from, ArTime to, ArPose result) {
    return AriaJavaJNI.ArRobot_applyEncoderOffset(swigCPtr, this, ArPoseWithTime.getCPtr(from), from, ArTime.getCPtr(to), to, ArPose.getCPtr(result), result);
  }

  public long getCounter() {
    return AriaJavaJNI.ArRobot_getCounter(swigCPtr, this);
  }

  public ArRobotParams getRobotParams() {
    long cPtr = AriaJavaJNI.ArRobot_getRobotParams(swigCPtr, this);
    return (cPtr == 0) ? null : new ArRobotParams(cPtr, false);
  }

  public void setRequireConfigPacket(boolean requireConfigPacket) {
    AriaJavaJNI.ArRobot_setRequireConfigPacket(swigCPtr, this, requireConfigPacket);
  }

  public ArRobotConfigPacketReader getOrigRobotConfig() {
    long cPtr = AriaJavaJNI.ArRobot_getOrigRobotConfig(swigCPtr, this);
    return (cPtr == 0) ? null : new ArRobotConfigPacketReader(cPtr, false);
  }

  public SWIGTYPE_p_ArRobotBatteryPacketReader getBatteryPacketReader() {
    long cPtr = AriaJavaJNI.ArRobot_getBatteryPacketReader(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArRobotBatteryPacketReader(cPtr, false);
  }

  public void setTransVelMax(double vel) {
    AriaJavaJNI.ArRobot_setTransVelMax(swigCPtr, this, vel);
  }

  public void setTransNegVelMax(double negVel) {
    AriaJavaJNI.ArRobot_setTransNegVelMax(swigCPtr, this, negVel);
  }

  public void setTransAccel(double acc) {
    AriaJavaJNI.ArRobot_setTransAccel(swigCPtr, this, acc);
  }

  public void setTransDecel(double decel) {
    AriaJavaJNI.ArRobot_setTransDecel(swigCPtr, this, decel);
  }

  public void setRotVelMax(double vel) {
    AriaJavaJNI.ArRobot_setRotVelMax(swigCPtr, this, vel);
  }

  public void setRotAccel(double acc) {
    AriaJavaJNI.ArRobot_setRotAccel(swigCPtr, this, acc);
  }

  public void setRotDecel(double decel) {
    AriaJavaJNI.ArRobot_setRotDecel(swigCPtr, this, decel);
  }

  public void setLatVelMax(double vel) {
    AriaJavaJNI.ArRobot_setLatVelMax(swigCPtr, this, vel);
  }

  public void setLatAccel(double acc) {
    AriaJavaJNI.ArRobot_setLatAccel(swigCPtr, this, acc);
  }

  public void setLatDecel(double decel) {
    AriaJavaJNI.ArRobot_setLatDecel(swigCPtr, this, decel);
  }

  public boolean hasSettableVelMaxes() {
    return AriaJavaJNI.ArRobot_hasSettableVelMaxes(swigCPtr, this);
  }

  public double getTransVelMax() {
    return AriaJavaJNI.ArRobot_getTransVelMax(swigCPtr, this);
  }

  public double getTransNegVelMax() {
    return AriaJavaJNI.ArRobot_getTransNegVelMax(swigCPtr, this);
  }

  public double getRotVelMax() {
    return AriaJavaJNI.ArRobot_getRotVelMax(swigCPtr, this);
  }

  public boolean hasSettableAccsDecs() {
    return AriaJavaJNI.ArRobot_hasSettableAccsDecs(swigCPtr, this);
  }

  public double getTransAccel() {
    return AriaJavaJNI.ArRobot_getTransAccel(swigCPtr, this);
  }

  public double getTransDecel() {
    return AriaJavaJNI.ArRobot_getTransDecel(swigCPtr, this);
  }

  public double getRotAccel() {
    return AriaJavaJNI.ArRobot_getRotAccel(swigCPtr, this);
  }

  public double getRotDecel() {
    return AriaJavaJNI.ArRobot_getRotDecel(swigCPtr, this);
  }

  public double getLatVelMax() {
    return AriaJavaJNI.ArRobot_getLatVelMax(swigCPtr, this);
  }

  public double getLatAccel() {
    return AriaJavaJNI.ArRobot_getLatAccel(swigCPtr, this);
  }

  public double getLatDecel() {
    return AriaJavaJNI.ArRobot_getLatDecel(swigCPtr, this);
  }

  public boolean loadParamFile(String file) {
    return AriaJavaJNI.ArRobot_loadParamFile(swigCPtr, this, file);
  }

  public void setRobotParams(ArRobotParams params) {
    AriaJavaJNI.ArRobot_setRobotParams(swigCPtr, this, ArRobotParams.getCPtr(params), params);
  }

  public void attachKeyHandler(ArKeyHandler keyHandler, boolean exitOnEscape, boolean useExitNotShutdown) {
    AriaJavaJNI.ArRobot_attachKeyHandler__SWIG_0(swigCPtr, this, ArKeyHandler.getCPtr(keyHandler), keyHandler, exitOnEscape, useExitNotShutdown);
  }

  public void attachKeyHandler(ArKeyHandler keyHandler, boolean exitOnEscape) {
    AriaJavaJNI.ArRobot_attachKeyHandler__SWIG_1(swigCPtr, this, ArKeyHandler.getCPtr(keyHandler), keyHandler, exitOnEscape);
  }

  public void attachKeyHandler(ArKeyHandler keyHandler) {
    AriaJavaJNI.ArRobot_attachKeyHandler__SWIG_2(swigCPtr, this, ArKeyHandler.getCPtr(keyHandler), keyHandler);
  }

  public ArKeyHandler getKeyHandler() {
    long cPtr = AriaJavaJNI.ArRobot_getKeyHandler(swigCPtr, this);
    return (cPtr == 0) ? null : new ArKeyHandler(cPtr, false);
  }

  public int lock() {
    return AriaJavaJNI.ArRobot_lock(swigCPtr, this);
  }

  public int tryLock() {
    return AriaJavaJNI.ArRobot_tryLock(swigCPtr, this);
  }

  public int unlock() {
    return AriaJavaJNI.ArRobot_unlock(swigCPtr, this);
  }

  public void setMutexLogging(boolean v) {
    AriaJavaJNI.ArRobot_setMutexLogging(swigCPtr, this, v);
  }

  public void setMutexLockWarningTime(double sec) {
    AriaJavaJNI.ArRobot_setMutexLockWarningTime(swigCPtr, this, sec);
  }

  public void setMutexUnlockWarningTime(double sec) {
    AriaJavaJNI.ArRobot_setMutexUnlockWarningTime(swigCPtr, this, sec);
  }

  public boolean isStabilizing() {
    return AriaJavaJNI.ArRobot_isStabilizing(swigCPtr, this);
  }

  public void setStabilizingTime(int mSecs) {
    AriaJavaJNI.ArRobot_setStabilizingTime(swigCPtr, this, mSecs);
  }

  public int getStabilizingTime() {
    return AriaJavaJNI.ArRobot_getStabilizingTime(swigCPtr, this);
  }

  public void addStabilizingCB(ArFunctor functor, ArListPos.Pos position) {
    AriaJavaJNI.ArRobot_addStabilizingCB__SWIG_0(swigCPtr, this, ArFunctor.getCPtr(functor), functor, position.swigValue());
  }

  public void addStabilizingCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_addStabilizingCB__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public void remStabilizingCB(ArFunctor functor) {
    AriaJavaJNI.ArRobot_remStabilizingCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public ArSyncTask getSyncTaskRoot() {
    long cPtr = AriaJavaJNI.ArRobot_getSyncTaskRoot(swigCPtr, this);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public void loopOnce() {
    AriaJavaJNI.ArRobot_loopOnce(swigCPtr, this);
  }

  public void setOdometryDelay(int msec) {
    AriaJavaJNI.ArRobot_setOdometryDelay(swigCPtr, this, msec);
  }

  public int getOdometryDelay() {
    return AriaJavaJNI.ArRobot_getOdometryDelay(swigCPtr, this);
  }

  public boolean getLogMovementSent() {
    return AriaJavaJNI.ArRobot_getLogMovementSent(swigCPtr, this);
  }

  public void setLogMovementSent(boolean logMovementSent) {
    AriaJavaJNI.ArRobot_setLogMovementSent(swigCPtr, this, logMovementSent);
  }

  public boolean getLogMovementReceived() {
    return AriaJavaJNI.ArRobot_getLogMovementReceived(swigCPtr, this);
  }

  public void setLogMovementReceived(boolean logMovementReceived) {
    AriaJavaJNI.ArRobot_setLogMovementReceived(swigCPtr, this, logMovementReceived);
  }

  public boolean getLogVelocitiesReceived() {
    return AriaJavaJNI.ArRobot_getLogVelocitiesReceived(swigCPtr, this);
  }

  public void setLogVelocitiesReceived(boolean logVelocitiesReceived) {
    AriaJavaJNI.ArRobot_setLogVelocitiesReceived(swigCPtr, this, logVelocitiesReceived);
  }

  public boolean getPacketsReceivedTracking() {
    return AriaJavaJNI.ArRobot_getPacketsReceivedTracking(swigCPtr, this);
  }

  public void setPacketsReceivedTracking(boolean packetsReceivedTracking) {
    AriaJavaJNI.ArRobot_setPacketsReceivedTracking(swigCPtr, this, packetsReceivedTracking);
  }

  public boolean getLogSIPContents() {
    return AriaJavaJNI.ArRobot_getLogSIPContents(swigCPtr, this);
  }

  public void setLogSIPContents(boolean logSIP) {
    AriaJavaJNI.ArRobot_setLogSIPContents(swigCPtr, this, logSIP);
  }

  public boolean getPacketsSentTracking() {
    return AriaJavaJNI.ArRobot_getPacketsSentTracking(swigCPtr, this);
  }

  public void setPacketsSentTracking(boolean packetsSentTracking) {
    AriaJavaJNI.ArRobot_setPacketsSentTracking(swigCPtr, this, packetsSentTracking);
  }

  public boolean getLogActions() {
    return AriaJavaJNI.ArRobot_getLogActions(swigCPtr, this);
  }

  public void setLogActions(boolean logActions) {
    AriaJavaJNI.ArRobot_setLogActions(swigCPtr, this, logActions);
  }

  public void setDoNotSwitchBaud(boolean doNotSwitchBaud) {
    AriaJavaJNI.ArRobot_setDoNotSwitchBaud(swigCPtr, this, doNotSwitchBaud);
  }

  public boolean getDoNotSwitchBaud() {
    return AriaJavaJNI.ArRobot_getDoNotSwitchBaud(swigCPtr, this);
  }

  public void incCounter() {
    AriaJavaJNI.ArRobot_incCounter(swigCPtr, this);
  }

  public void packetHandler() {
    AriaJavaJNI.ArRobot_packetHandler(swigCPtr, this);
  }

  public void actionHandler() {
    AriaJavaJNI.ArRobot_actionHandler(swigCPtr, this);
  }

  public void stateReflector() {
    AriaJavaJNI.ArRobot_stateReflector(swigCPtr, this);
  }

  public void robotLocker() {
    AriaJavaJNI.ArRobot_robotLocker(swigCPtr, this);
  }

  public void robotUnlocker() {
    AriaJavaJNI.ArRobot_robotUnlocker(swigCPtr, this);
  }

  public void packetHandlerNonThreaded() {
    AriaJavaJNI.ArRobot_packetHandlerNonThreaded(swigCPtr, this);
  }

  public void packetHandlerThreadedProcessor() {
    AriaJavaJNI.ArRobot_packetHandlerThreadedProcessor(swigCPtr, this);
  }

  public void packetHandlerThreadedReader() {
    AriaJavaJNI.ArRobot_packetHandlerThreadedReader(swigCPtr, this);
  }

  public void keyHandlerExit() {
    AriaJavaJNI.ArRobot_keyHandlerExit(swigCPtr, this);
  }

  public boolean processMotorPacket(ArRobotPacket packet) {
    return AriaJavaJNI.ArRobot_processMotorPacket(swigCPtr, this, ArRobotPacket.getCPtr(packet), packet);
  }

  public void processNewSonar(char number, int range, ArTime timeReceived) {
    AriaJavaJNI.ArRobot_processNewSonar(swigCPtr, this, number, range, ArTime.getCPtr(timeReceived), timeReceived);
  }

  public boolean processEncoderPacket(ArRobotPacket packet) {
    return AriaJavaJNI.ArRobot_processEncoderPacket(swigCPtr, this, ArRobotPacket.getCPtr(packet), packet);
  }

  public boolean processIOPacket(ArRobotPacket packet) {
    return AriaJavaJNI.ArRobot_processIOPacket(swigCPtr, this, ArRobotPacket.getCPtr(packet), packet);
  }

  public void init() {
    AriaJavaJNI.ArRobot_init(swigCPtr, this);
  }

  public void setUpSyncList() {
    AriaJavaJNI.ArRobot_setUpSyncList(swigCPtr, this);
  }

  public void setUpPacketHandlers() {
    AriaJavaJNI.ArRobot_setUpPacketHandlers(swigCPtr, this);
  }

  public void setMyMotorPacketCB(SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t value) {
    AriaJavaJNI.ArRobot_myMotorPacketCB_set(swigCPtr, this, SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t getMyMotorPacketCB() {
    long cPtr = AriaJavaJNI.ArRobot_myMotorPacketCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t(cPtr, false);
  }

  public void setMyEncoderPacketCB(SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t value) {
    AriaJavaJNI.ArRobot_myEncoderPacketCB_set(swigCPtr, this, SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t getMyEncoderPacketCB() {
    long cPtr = AriaJavaJNI.ArRobot_myEncoderPacketCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t(cPtr, false);
  }

  public void setMyIOPacketCB(SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t value) {
    AriaJavaJNI.ArRobot_myIOPacketCB_set(swigCPtr, this, SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t getMyIOPacketCB() {
    long cPtr = AriaJavaJNI.ArRobot_myIOPacketCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArRetFunctor1CT_bool_ArRobot_ArRobotPacket_p_t(cPtr, false);
  }

  public void setMyPacketHandlerCB(SWIGTYPE_p_ArFunctorCT_ArRobot_t value) {
    AriaJavaJNI.ArRobot_myPacketHandlerCB_set(swigCPtr, this, SWIGTYPE_p_ArFunctorCT_ArRobot_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArFunctorCT_ArRobot_t getMyPacketHandlerCB() {
    long cPtr = AriaJavaJNI.ArRobot_myPacketHandlerCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArFunctorCT_ArRobot_t(cPtr, false);
  }

  public void setMyActionHandlerCB(SWIGTYPE_p_ArFunctorCT_ArRobot_t value) {
    AriaJavaJNI.ArRobot_myActionHandlerCB_set(swigCPtr, this, SWIGTYPE_p_ArFunctorCT_ArRobot_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArFunctorCT_ArRobot_t getMyActionHandlerCB() {
    long cPtr = AriaJavaJNI.ArRobot_myActionHandlerCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArFunctorCT_ArRobot_t(cPtr, false);
  }

  public void setMyStateReflectorCB(SWIGTYPE_p_ArFunctorCT_ArRobot_t value) {
    AriaJavaJNI.ArRobot_myStateReflectorCB_set(swigCPtr, this, SWIGTYPE_p_ArFunctorCT_ArRobot_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArFunctorCT_ArRobot_t getMyStateReflectorCB() {
    long cPtr = AriaJavaJNI.ArRobot_myStateReflectorCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArFunctorCT_ArRobot_t(cPtr, false);
  }

  public void setMyRobotLockerCB(SWIGTYPE_p_ArFunctorCT_ArRobot_t value) {
    AriaJavaJNI.ArRobot_myRobotLockerCB_set(swigCPtr, this, SWIGTYPE_p_ArFunctorCT_ArRobot_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArFunctorCT_ArRobot_t getMyRobotLockerCB() {
    long cPtr = AriaJavaJNI.ArRobot_myRobotLockerCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArFunctorCT_ArRobot_t(cPtr, false);
  }

  public void setMyRobotUnlockerCB(SWIGTYPE_p_ArFunctorCT_ArRobot_t value) {
    AriaJavaJNI.ArRobot_myRobotUnlockerCB_set(swigCPtr, this, SWIGTYPE_p_ArFunctorCT_ArRobot_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArFunctorCT_ArRobot_t getMyRobotUnlockerCB() {
    long cPtr = AriaJavaJNI.ArRobot_myRobotUnlockerCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArFunctorCT_ArRobot_t(cPtr, false);
  }

  public void setMyKeyHandlerExitCB(SWIGTYPE_p_ArFunctorCT_ArRobot_t value) {
    AriaJavaJNI.ArRobot_myKeyHandlerExitCB_set(swigCPtr, this, SWIGTYPE_p_ArFunctorCT_ArRobot_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArFunctorCT_ArRobot_t getMyKeyHandlerExitCB() {
    long cPtr = AriaJavaJNI.ArRobot_myKeyHandlerExitCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArFunctorCT_ArRobot_t(cPtr, false);
  }

  public void setMyKeyHandlerCB(SWIGTYPE_p_ArFunctorCT_ArKeyHandler_t value) {
    AriaJavaJNI.ArRobot_myKeyHandlerCB_set(swigCPtr, this, SWIGTYPE_p_ArFunctorCT_ArKeyHandler_t.getCPtr(value));
  }

  public SWIGTYPE_p_ArFunctorCT_ArKeyHandler_t getMyKeyHandlerCB() {
    long cPtr = AriaJavaJNI.ArRobot_myKeyHandlerCB_get(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_ArFunctorCT_ArKeyHandler_t(cPtr, false);
  }

  public int asyncConnectHandler(boolean tryHarderToConnect) {
    return AriaJavaJNI.ArRobot_asyncConnectHandler(swigCPtr, this, tryHarderToConnect);
  }

  public void dropConnection(String technicalReason, String userReason) {
    AriaJavaJNI.ArRobot_dropConnection__SWIG_0(swigCPtr, this, technicalReason, userReason);
  }

  public void dropConnection(String technicalReason) {
    AriaJavaJNI.ArRobot_dropConnection__SWIG_1(swigCPtr, this, technicalReason);
  }

  public void dropConnection() {
    AriaJavaJNI.ArRobot_dropConnection__SWIG_2(swigCPtr, this);
  }

  public String getDropConnectionReason() {
    return AriaJavaJNI.ArRobot_getDropConnectionReason(swigCPtr, this);
  }

  public String getDropConnectionUserReason() {
    return AriaJavaJNI.ArRobot_getDropConnectionUserReason(swigCPtr, this);
  }

  public void failedConnect() {
    AriaJavaJNI.ArRobot_failedConnect(swigCPtr, this);
  }

  public boolean madeConnection(boolean resetConnectionTime) {
    return AriaJavaJNI.ArRobot_madeConnection__SWIG_0(swigCPtr, this, resetConnectionTime);
  }

  public boolean madeConnection() {
    return AriaJavaJNI.ArRobot_madeConnection__SWIG_1(swigCPtr, this);
  }

  public void startStabilization() {
    AriaJavaJNI.ArRobot_startStabilization(swigCPtr, this);
  }

  public void finishedConnection() {
    AriaJavaJNI.ArRobot_finishedConnection(swigCPtr, this);
  }

  public void cancelConnection() {
    AriaJavaJNI.ArRobot_cancelConnection(swigCPtr, this);
  }

  public boolean handlePacket(ArRobotPacket packet) {
    return AriaJavaJNI.ArRobot_handlePacket(swigCPtr, this, ArRobotPacket.getCPtr(packet), packet);
  }

  public ArFunctorPtrList getRunExitListCopy() {
    long cPtr = AriaJavaJNI.ArRobot_getRunExitListCopy(swigCPtr, this);
    return (cPtr == 0) ? null : new ArFunctorPtrList(cPtr, false);
  }

  public void processParamFile() {
    AriaJavaJNI.ArRobot_processParamFile(swigCPtr, this);
  }

  public ArPose getRawEncoderPose() {
    return new ArPose(AriaJavaJNI.ArRobot_getRawEncoderPose(swigCPtr, this), true);
  }

  public boolean getNoTimeWarningThisCycle() {
    return AriaJavaJNI.ArRobot_getNoTimeWarningThisCycle(swigCPtr, this);
  }

  public void setNoTimeWarningThisCycle(boolean noTimeWarningThisCycle) {
    AriaJavaJNI.ArRobot_setNoTimeWarningThisCycle(swigCPtr, this, noTimeWarningThisCycle);
  }

  public ArRobotPacketSender getPacketSender() {
    long cPtr = AriaJavaJNI.ArRobot_getPacketSender(swigCPtr, this);
    return (cPtr == 0) ? null : new ArRobotPacketSender(cPtr, false);
  }

  public ArRobotPacketReceiver getPacketReceiver() {
    long cPtr = AriaJavaJNI.ArRobot_getPacketReceiver(swigCPtr, this);
    return (cPtr == 0) ? null : new ArRobotPacketReceiver(cPtr, false);
  }

  public ArSyncTask addUserTask(ArFunctor functor, String name) {
    long cPtr = AriaJavaJNI.ArRobot_addUserTask__SWIG_2(swigCPtr, this, ArFunctor.getCPtr(functor), functor, name);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public ArSyncTask addUserTask(ArFunctor functor) {
    long cPtr = AriaJavaJNI.ArRobot_addUserTask__SWIG_3(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public ArSyncTask addSensorInterpTask(ArFunctor functor, String name) {
    long cPtr = AriaJavaJNI.ArRobot_addSensorInterpTask__SWIG_2(swigCPtr, this, ArFunctor.getCPtr(functor), functor, name);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public ArSyncTask addSensorInterpTask(ArFunctor functor) {
    long cPtr = AriaJavaJNI.ArRobot_addSensorInterpTask__SWIG_3(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
    return (cPtr == 0) ? null : new ArSyncTask(cPtr, false);
  }

  public void removeTask(String name) {
    AriaJavaJNI.ArRobot_removeTask__SWIG_0(swigCPtr, this, name);
  }

  public boolean replaceSensorInterpTask(ArFunctor newFunctor, String name) {
    return AriaJavaJNI.ArRobot_replaceSensorInterpTask(swigCPtr, this, ArFunctor.getCPtr(newFunctor), newFunctor, name);
  }

  public boolean replaceUserTask(ArFunctor newFunctor, String name) {
    return AriaJavaJNI.ArRobot_replaceUserTask(swigCPtr, this, ArFunctor.getCPtr(newFunctor), newFunctor, name);
  }

  public void removeTask(ArFunctor f) {
    AriaJavaJNI.ArRobot_removeTask__SWIG_1(swigCPtr, this, ArFunctor.getCPtr(f), f);
  }

  public final static class WaitState {
    public final static ArRobot.WaitState WAIT_CONNECTED = new ArRobot.WaitState("WAIT_CONNECTED");
    public final static ArRobot.WaitState WAIT_FAILED_CONN = new ArRobot.WaitState("WAIT_FAILED_CONN");
    public final static ArRobot.WaitState WAIT_RUN_EXIT = new ArRobot.WaitState("WAIT_RUN_EXIT");
    public final static ArRobot.WaitState WAIT_TIMEDOUT = new ArRobot.WaitState("WAIT_TIMEDOUT");
    public final static ArRobot.WaitState WAIT_INTR = new ArRobot.WaitState("WAIT_INTR");
    public final static ArRobot.WaitState WAIT_FAIL = new ArRobot.WaitState("WAIT_FAIL");

    public final int swigValue() {
      return swigValue;
    }

    public String toString() {
      return swigName;
    }

    public static WaitState swigToEnum(int swigValue) {
      if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
        return swigValues[swigValue];
      for (int i = 0; i < swigValues.length; i++)
        if (swigValues[i].swigValue == swigValue)
          return swigValues[i];
      throw new IllegalArgumentException("No enum " + WaitState.class + " with value " + swigValue);
    }

    private WaitState(String swigName) {
      this.swigName = swigName;
      this.swigValue = swigNext++;
    }

    private WaitState(String swigName, int swigValue) {
      this.swigName = swigName;
      this.swigValue = swigValue;
      swigNext = swigValue+1;
    }

    private WaitState(String swigName, WaitState swigEnum) {
      this.swigName = swigName;
      this.swigValue = swigEnum.swigValue;
      swigNext = this.swigValue+1;
    }

    private static WaitState[] swigValues = { WAIT_CONNECTED, WAIT_FAILED_CONN, WAIT_RUN_EXIT, WAIT_TIMEDOUT, WAIT_INTR, WAIT_FAIL };
    private static int swigNext = 0;
    private final int swigValue;
    private final String swigName;
  }

  public final static class ChargeState {
    public final static ArRobot.ChargeState CHARGING_UNKNOWN = new ArRobot.ChargeState("CHARGING_UNKNOWN", AriaJavaJNI.ArRobot_CHARGING_UNKNOWN_get());
    public final static ArRobot.ChargeState CHARGING_NOT = new ArRobot.ChargeState("CHARGING_NOT", AriaJavaJNI.ArRobot_CHARGING_NOT_get());
    public final static ArRobot.ChargeState CHARGING_BULK = new ArRobot.ChargeState("CHARGING_BULK", AriaJavaJNI.ArRobot_CHARGING_BULK_get());
    public final static ArRobot.ChargeState CHARGING_OVERCHARGE = new ArRobot.ChargeState("CHARGING_OVERCHARGE", AriaJavaJNI.ArRobot_CHARGING_OVERCHARGE_get());
    public final static ArRobot.ChargeState CHARGING_FLOAT = new ArRobot.ChargeState("CHARGING_FLOAT", AriaJavaJNI.ArRobot_CHARGING_FLOAT_get());
    public final static ArRobot.ChargeState CHARGING_BALANCE = new ArRobot.ChargeState("CHARGING_BALANCE", AriaJavaJNI.ArRobot_CHARGING_BALANCE_get());

    public final int swigValue() {
      return swigValue;
    }

    public String toString() {
      return swigName;
    }

    public static ChargeState swigToEnum(int swigValue) {
      if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
        return swigValues[swigValue];
      for (int i = 0; i < swigValues.length; i++)
        if (swigValues[i].swigValue == swigValue)
          return swigValues[i];
      throw new IllegalArgumentException("No enum " + ChargeState.class + " with value " + swigValue);
    }

    private ChargeState(String swigName) {
      this.swigName = swigName;
      this.swigValue = swigNext++;
    }

    private ChargeState(String swigName, int swigValue) {
      this.swigName = swigName;
      this.swigValue = swigValue;
      swigNext = swigValue+1;
    }

    private ChargeState(String swigName, ChargeState swigEnum) {
      this.swigName = swigName;
      this.swigValue = swigEnum.swigValue;
      swigNext = this.swigValue+1;
    }

    private static ChargeState[] swigValues = { CHARGING_UNKNOWN, CHARGING_NOT, CHARGING_BULK, CHARGING_OVERCHARGE, CHARGING_FLOAT, CHARGING_BALANCE };
    private static int swigNext = 0;
    private final int swigValue;
    private final String swigName;
  }

}
